package com.campus.app.service;

import com.campus.commons.entity.CheckEvening;
import com.campus.commons.entity.CheckMorningExercise;
import com.baomidou.mybatisplus.extension.service.IService;
import com.campus.commons.utils.Result;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Repository;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 晨练检查表 服务类
 * </p>
 *
 * @author Rin
 * @since 2020-12-24
 */
@Repository
public interface CheckMorningExercisesService extends IService<CheckMorningExercise> {
    /**
     * 查晨练缓存
     * key：班级id
     */
    public static Map<Integer, CheckMorningExercise>checkMorningExerciseMap  = new HashMap<>();

    /**
     * 获取所有查班统计
     *
     * @param size
     * @param limit
     * @return 工具对象
     */
    Result<List<CheckMorningExercise>> getCheckHealth(int size, int limit);

    /**
     * 复合查询
     *
     * @param
     * @param start
     * @param end
     * @param size
     * @param limit
     * @param className
     * @return
     */
    Result<List<CheckMorningExercise>> getCheckMorningByDate(String start, String end, int size, int limit, String className,int isRed);

    /**
     * 删除一条记录
     *
     * @param id
     * @return
     */
    Result del(@NotNull @Min(1) Integer id);

    /**
     * 修改方法
     *
     * @param checkMorningExercise
     * @return
     */
    Result upDate(@NotNull CheckMorningExercise checkMorningExercise);


    /**
     * 前台缓存添加数据
     * @param checkMorningExercisec 查晨练对象
     * @return 工具
     */
    Result addCheckMorningExercise(@NotNull CheckMorningExercise checkMorningExercisec);

    /**
     * 修改缓存数据,(与上一个方法一样，但是别用上一个进行修改)
     *
     * @param checkMorningExercise 查晨练对象
     * @return 工具
     */
    Result upCheckMorningExercise(@NotNull CheckMorningExercise checkMorningExercise);

    Result getCacheCheckMorning();
    /**
     * 删除缓存数据
     *
     * @param classId 班级编号
     * @return 工具
     */
    Result delCheckMorningExercise(@NotNull Integer classId);

    /**
     *导出晨练检查的表格
     */
    @Scheduled(cron = "* * 20 * * ? ")
    void exportExcelForCheckMorning();

    /**
     * 查询被警告班级
     * @param page
     * @param limit
     * @return
     */
    Result<List<CheckMorningExercise>> getIsRed(int page, int limit);

    /**
     * 根据id获取一条数据
     *
     * @param id
     * @return
     */
    Result<CheckMorningExercise> getOneData(int id);

}
